package com.zuihai.app.mvp.contract;

import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;
import com.zuihai.app.mvp.model.entity.BaseJson;
import com.zuihai.app.mvp.model.entity.HomeBanner;
import com.zuihai.app.mvp.model.entity.HomeItem;
import com.zuihai.app.mvp.ui.adapter.HomeRecyclerAdapter;

import java.util.List;

import rx.Observable;

/**
 * Created by Administrator on 2017/5/4 0004.
 */

public interface HomeRecyclerContract {
    //对于经常使用的关于UI的方法可以定义到BaseView中,如显示隐藏进度条,和显示文字消息
    interface View extends IView {
        /**
         * 绑定和初始化RecyclerView
         * @param adapter
         */
        void bindAdapter(HomeRecyclerAdapter adapter);

        void handleError(Throwable e);

        void fillBanner(HomeRecyclerAdapter adapter, List<HomeBanner> banners);
    }

    //Model层定义接口,外部只需关心model返回的数据,无需关心内部细节,及是否使用缓存
    interface Model extends IModel {
        /**
         * 文章类型通用
         */
        Observable<BaseJson<HomeItem>> getActicle(String userId, int pageIndex,String type);
        /**
         * 文章类型通用 (废弃)
         */
        Observable<BaseJson<HomeItem>> requestActical(String userId, int pageIndex);
        /**
         * 逛街
         */
        Observable<BaseJson<HomeItem>> requestSecret(String userId, int pageIndex);
        /**
         * 逛街
         */
        Observable<BaseJson<HomeItem>> requestShopping(String userId, int pageIndex);
        /**
         * 周边
         * @param pageIndex
         * @param userId
         * @return
         */
        Observable<BaseJson<HomeItem>> requestPeriphery(String userId, int pageIndex);
        /**
         * 活动
         * @param pageIndex
         * @param userId
         * @return
         */
        Observable<BaseJson<HomeItem>> requestActivity(String userId, int pageIndex);
        /**
         * 请求人物
         * @return
         */
        Observable<BaseJson<HomeItem>> requestPersion(int pageIndex, String userId);
        /**
         * 请求互助
         * @return
         */
        Observable<BaseJson<HomeItem>> requesHelp(int pageIndex, String userId);
        /**
         * 请求故事
         * @return
         */
        Observable<BaseJson<HomeItem>> requestStory(int pageIndex, String userId);

        /**
         * 请求热点
         * @return
         */
        Observable<BaseJson<HomeItem>> requestHot(int pageIndex, String userId);

        /**
         * 请求广告
         * @return
         */
        Observable<BaseJson<HomeBanner>> requestBanner();

        /**
         * 请求推荐数据
         * @return
         */
        Observable<BaseJson<HomeItem>> requestRecommend(int pageIndex, String userId);

        /**
         * 请求今日头条
         * @return
         */
        Observable<BaseJson<HomeItem>> requestHeadline(int pageIndex, String userId);

        /**
         * 请求今日头条
         * @return
         */
        Observable<BaseJson<HomeItem>> requestFindRecommend(int pageIndex, String userId);

        /**
         * 请求酒城日记
         * @return
         */
        Observable<BaseJson<HomeItem>> requestDiary(int pageIndex, String userId);

        /**
         * 请求图片
         * @return
         */
        Observable<BaseJson<HomeItem>> requestPicture( int pageIndex, String userId ,String type);


        Observable<BaseJson<HomeItem>> requestMyHeadline(String userId,String myID,int pageIndex);



       /*

        Observable<BaseJson<HomeItem>> requestMyGuangjie(String userId,String myID,int pageIndex);*/

    }
}